class Solution {
public:
    /**
     * max water
     * @param arr int整型vector the array
     * @return long长整型
     */
    long long ans=0;
    long long maxWater(vector<int>& arr) {
        // write code here
        int len=arr.size();
        if(len<3)
            return 0;
       int *left=new int[len];//从左往右看用来存储左边柱子高度的最大值
        int *right=new int[len];//从右往左看存储右边柱子的最大值
        //right[len-1]=arr[len-1];
        left[0]=arr[0];
        right[len-1]=arr[len-1];
        for(int i=1;i<len;i++)
            left[i]=max(left[i-1],arr[i]);
        for(int i=len-2;i>=0;i--)
        {   
            right[i]=max(right[i+1],arr[i]);
        }
        //将两个数组对应起来看；
        //取对应位置的两个数组中最小值
        //-原始数组所对应的值
        for(int i=0;i<len;i++)
        {
            ans+=min(right[i],left[i])-arr[i];
        }
        return ans;
    }
};